
package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Lote;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 */
public class LoteDAO extends GenericSAPDAO {
    
    //Atributos
    private List<Lote> misLotes;
    
    //Constructores
    public LoteDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("T_LOTE");
        super.setMyTable(aFunction);
        this.misLotes = new ArrayList<Lote>();
    }
    
    /**
     * Columnas de Lote:
     * LOTE		ZLOTE   	CHAR	7	Lote de 7 caracteres
     * ZESPECIE		ZZESPECIE	CHAR	4	Especie de frutas
     * ZVARIEDAD	ZZVARIEDA	CHAR	4	Variedad de frutas
     * PROVEEDOR	NAME1   	CHAR	30	Nombre
     * ZATMOSFERA	ZZATMOSF	CHAR	2	Atmosfera controlada o natural
     * CANTIDAD		MENGE_D 	QUAN	13,3	Cantidad
     * BINES		ZBINES5 	INT2	5	Bines
     * SENASA		ZSENASA 	CHAR	3	Nro para senasa
     * UMI		CHAR9   	CHAR	9	Campo de texto, 9 posiciones
     * EUREPGAP		ZEUREPGAP	CHAR	25	Código Eurepgap
     */
    
    @Override
    public void findAll() throws SapGeneralException {
        Lote aLote;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                aLote=new Lote(super.getMyTable().getString("LOTE"), super.getMyTable().getString("ZESPECIE"), super.getMyTable().getString("ZVARIEDAD"), super.getMyTable().getString("PROVEEDOR"), super.getMyTable().getString("ZATMOSFERA"), super.getMyTable().getDouble("CANTIDAD"), super.getMyTable().getInt("BINES"), super.getMyTable().getString("SENASA"), super.getMyTable().getString("UMI"), super.getMyTable().getString("EUREPGAP"));
                addUnLote(aLote);
            }
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
        }

        
    }

    /**
     * Solo para las pruebas
     */
    @Override
    public void printAll() {
        System.out.println("LOTE"+'\t'+"ZESPECIE"+'\t'+"ZVARIEDAD"+'\t'+"PROVEEDOR"+'\t'+"ZATMOSFERA"+'\t'+"CANTIDAD"+'\t'+"BINES"+'\t'+"SENASA"+'\t'+"UMI"+'\t'+"EUREPGAP");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("LOTE") +
            '\t' + super.getMyTable().getString("ZESPECIE") + 
            '\t' + super.getMyTable().getString("ZVARIEDAD") +
            '\t' + super.getMyTable().getString("PROVEEDOR") + 
            '\t' + super.getMyTable().getString("ZATMOSFERA") + 
            '\t' + super.getMyTable().getString("CANTIDAD") +
            '\t' + super.getMyTable().getString("BINES") +
            '\t' + super.getMyTable().getString("SENASA") + 
            '\t' + super.getMyTable().getString("UMI") + 
            '\t' + super.getMyTable().getString("EUREPGAP") 
            );                
        }
    }

    private void addUnLote(Lote aLote) {
        this.misLotes.add(aLote);
                
    }

    public List <Lote> getMisLotes() {
        return misLotes;
    }
    
    
    
}
